package com.vastgames.mars.Entity;

import net.phys2d.raw.Body;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.state.StateBasedGame;

/**
 * Makes entity a physics body which allows it to be Moved. 
 * Defines static directions;
 * @author Administrator
 *
 */
public abstract interface Moveable {
	static int NORTH=0;
	static int NORTHWEST=1;
	static int WEST=2;
	static int SOUTHWEST=3;
	static int SOUTH=4;
	static int SOUTHEAST=5;
	static int EAST=6;
	static int NORTHEAST=7;
	
	/**
	 * Entity can be pushed in 8 directions.
	 * 
	 * @param direction - Moveable.NORTH, etc defines 8 way direction
	 * @param force - How much force
	 */
	abstract void move(int direction, float force);
	
	/**
	 * Forcing the Entity to init something to create a Body
	 * 
	 * @param gc GameContainer
	 * @param sbg StateBasedGame
	 */
	abstract void init(GameContainer gc, StateBasedGame sbg);
	/** 
	 * Entity Physics body
	 * @return Body Static or Dynamic
	 */
	abstract Body getBody();
}
